﻿using System;
using System.Collections.Generic;
using System.Windows.Forms;

namespace T4_Eind_programma
{
    public partial class BatchScherm : Form
    {
        #region Variable Declaration

        private bool init = true;
        private Mengbatch mijnMengbatch;
        private int ordernummer;

        #endregion Variable Declaration

        #region Properties

        public Mengbatch MijnMengbatch
        {
            get { return mijnMengbatch; }
            set { mijnMengbatch = value; }
        }

        #endregion Properties

        #region Constructor

        public BatchScherm(BatchOverzicht parent, Mengbatch mijnMengbatch)
        {
            InitializeComponent();
            this.mijnMengbatch = mijnMengbatch;
            ordernummer = parent.MijnOrder.Nummer;
            MengbatchToControls(mijnMengbatch);
            InitControls();
        }

        private void InitControls()
        {
            labelMengtijd.Text = "Mengtijd: " + trackBarMengtijd.Value * 10 + " sec";
            labelSiroopPct.Text = "Siroop: " + trackBarSiroopPct.Value + " %";
            labelVerwarmTijd.Text = "Verwarm tijd :" + trackBarVerwarmTijd.Value + " sec";
            labelDoeltank.Text = "Doeltank: C" + comboBoxDoeltank.SelectedItem;
            string name = "vat";
            if (trackBarHoeveelheid.Value == 1) name = "vat";

            else name = "vaten";

            labelHoeveelheid.Text = trackBarHoeveelheid.Value + " " + name;
            if (checkBoxHandmatig.Checked == false)
                comboBoxDoeltank.Enabled = false;
            else
                comboBoxDoeltank.Enabled = true;
            init = false;
        }

        #endregion Constructor

        #region Button Clicks

        private void btnCancel_Click(object sender, EventArgs e)
        {
            this.DialogResult = DialogResult.No;
            this.Close();
        }

        private void btnSubmit_Click(object sender, EventArgs e)
        {
            ControlsToMengbatch(mijnMengbatch);
            mijnMengbatch.Status = "Inactief";
            this.DialogResult = DialogResult.OK;
            this.Close();
        }

        #endregion Button Clicks

        #region Control En Batch

        private void BatchScherm_Shown(object sender, EventArgs e)
        {
            this.Activate();
        }

        private void ControlsToMengbatch(Mengbatch mijnMengbatch)
        {
            mijnMengbatch.Nummer = Convert.ToInt32(textBoxNummer.Text);

            mijnMengbatch.Smaak = new Smaak(comboBoxSmaak.Text);

            mijnMengbatch.Hoeveelheid = trackBarHoeveelheid.Value;

            mijnMengbatch.SiroopPercentage = trackBarSiroopPct.Value;

            mijnMengbatch.Mengtijd = trackBarMengtijd.Value * 10;

            mijnMengbatch.Verwarmen = true;

            mijnMengbatch.Handmatig = checkBoxHandmatig.Checked;
            var tanken = new List<Doeltank>();
            if (comboBoxDoeltank.SelectedItem.ToString().Length > 1)
            {
                var temp = comboBoxDoeltank.SelectedItem.ToString().Split(' ');
                tanken.Add(new Doeltank(Convert.ToInt32(temp[0])));
                if (trackBarHoeveelheid.Value > 5)
                    tanken.Add(new Doeltank(Convert.ToInt32(temp[2])));
            }
            else
            {
                tanken.Add(new Doeltank(Convert.ToInt32(comboBoxDoeltank.SelectedItem)));
            }
            mijnMengbatch.Doeltank = tanken;

            mijnMengbatch.Klaar = checkBoxKlaar.Checked;

            mijnMengbatch.VerwarmTijd = trackBarVerwarmTijd.Value;

            mijnMengbatch.Productcode = mijnMengbatch.GenereerProductcode(ordernummer);
        }

        private void MengbatchToControls(Mengbatch mijnMengbatch)
        {
            textBoxNummer.Text = mijnMengbatch.Nummer.ToString();

            textBoxProductcode.Text = mijnMengbatch.Productcode;
            if (mijnMengbatch.Smaak == null)
            {
                comboBoxSmaak.Text = "Cola";
            }
            else
            {
                comboBoxSmaak.Text = mijnMengbatch.Smaak.Naam;
            }

            checkBoxHandmatig.Checked = mijnMengbatch.Handmatig;

            checkBoxKlaar.Checked = mijnMengbatch.Klaar;

            if (mijnMengbatch.Hoeveelheid >= trackBarHoeveelheid.Minimum)
            {
                trackBarHoeveelheid.Value = mijnMengbatch.Hoeveelheid;
            }
            if (mijnMengbatch.SiroopPercentage >= trackBarSiroopPct.Minimum)
            {
                trackBarSiroopPct.Value = mijnMengbatch.SiroopPercentage;
            }
            if (mijnMengbatch.Mengtijd >= trackBarMengtijd.Minimum)
            {
                trackBarMengtijd.Value = mijnMengbatch.Mengtijd / 10;
            }

            if (mijnMengbatch.Doeltank != null)
            {
                if (mijnMengbatch.Doeltank.Count > 1)
                {
                    HandleComboBox();
                    comboBoxDoeltank.SelectedItem = (mijnMengbatch.Doeltank[0].Nummer + " en "
                        + mijnMengbatch.Doeltank[1].Nummer).ToString();
                }
                else
                {
                    HandleComboBox();
                    comboBoxDoeltank.SelectedItem = (mijnMengbatch.Doeltank[0].Nummer).ToString();
                }
            }
            if (mijnMengbatch.VerwarmTijd >= trackBarVerwarmTijd.Minimum)
            {
                trackBarVerwarmTijd.Value = mijnMengbatch.VerwarmTijd;
            }
        }

        #endregion Control En Batch

        #region Valuechanged

        private void checkBoxHandmatig_CheckedChanged(object sender, EventArgs e)
        {
            if (checkBoxHandmatig.Checked == false)
            {
                comboBoxDoeltank.Enabled = false;
            }
            else
            {
                comboBoxDoeltank.Enabled = true;
            }
        }

        private void comboBoxDoeltank_SelectionChangeCommitted(object sender, EventArgs e)
        {
            HandleComboBox();
            labelDoeltank.Text = "Doeltank: C" + comboBoxDoeltank.SelectedItem;
        }

        private void HandleComboBox()
        {
            if (trackBarHoeveelheid.Value < 6)
            {
                if (comboBoxDoeltank.Items.Contains("6 en 7"))
                    comboBoxDoeltank.Items.Remove("6 en 7");
                if (comboBoxDoeltank.Items.Contains("8 en 9"))
                    comboBoxDoeltank.Items.Remove("8 en 9");
                if (!comboBoxDoeltank.Items.Contains("6"))
                    comboBoxDoeltank.Items.Add("6");
                if (!comboBoxDoeltank.Items.Contains("7"))
                    comboBoxDoeltank.Items.Add("7");
                if (!comboBoxDoeltank.Items.Contains("8"))
                    comboBoxDoeltank.Items.Add("8");
                if (!comboBoxDoeltank.Items.Contains("9"))
                    comboBoxDoeltank.Items.Add("9");
            }
            else
            {
                if (comboBoxDoeltank.Items.Contains("6"))
                    comboBoxDoeltank.Items.Remove("6");
                if (comboBoxDoeltank.Items.Contains("7"))
                    comboBoxDoeltank.Items.Remove("7");
                if (comboBoxDoeltank.Items.Contains("8"))
                    comboBoxDoeltank.Items.Remove("8");
                if (comboBoxDoeltank.Items.Contains("9"))
                    comboBoxDoeltank.Items.Remove("9");
                if (!comboBoxDoeltank.Items.Contains("6 en 7"))
                    comboBoxDoeltank.Items.Add("6 en 7");
                if (!comboBoxDoeltank.Items.Contains("8 en 9"))
                    comboBoxDoeltank.Items.Add("8 en 9");
            }

            if (comboBoxDoeltank.SelectedItem == null && trackBarHoeveelheid.Value > 5)
                comboBoxDoeltank.SelectedItem = "6 en 7";
            else if (comboBoxDoeltank.SelectedItem == null && trackBarHoeveelheid.Value < 6)
                comboBoxDoeltank.SelectedItem = "6";
        }

        private void trackBarHoeveelheidValueChanged(object sender, EventArgs e)
        {
            string name = "vat";
            if (trackBarHoeveelheid.Value == 1)
            {
                name = "vat";
            }
            else
            {
                name = "vaten";
            }
            labelHoeveelheid.Text = trackBarHoeveelheid.Value + " " + name;
            HandleComboBox();
            labelDoeltank.Text = "Doeltank: C" + comboBoxDoeltank.SelectedItem;
        }

        private void trackBarMengtijdValueChanged(object sender, EventArgs e)
        {
            labelMengtijd.Text = "Mengtijd: " + trackBarMengtijd.Value * 10 + " sec";
        }

        private void trackBarSiroopPctValueChanged(object sender, EventArgs e)
        {
            labelSiroopPct.Text = "Siroop: " + trackBarSiroopPct.Value + " %";
        }

        private void trackBarVerwarmTijd_ValueChanged(object sender, EventArgs e)
        {
            labelVerwarmTijd.Text = "Verwarm tijd :" + trackBarVerwarmTijd.Value + " sec";
        }

        #endregion Valuechanged
    }
}